草庐IT

C++ ifstream 到 char *

全部标签

c++ - 了解 32 位 C 编译器中的 sizeof(char)

(sizeof)char在32位GCC编译器中总是返回1。但是由于32位编译器的基本block大小是4,那么在基本大小为4字节的情况下,char如何占用单个字节???考虑以下几点:structst{inta;charc;};sizeof(st)返回8与默认的4字节block大小一致(因为分配了2个block)我永远无法理解为什么当分配一个大小为4的block时sizeof(char)返回为1。有人能解释一下吗???我会非常感谢任何解释它的回复!!!编辑:“位”的错字已更改为“字节”。我向第一次编辑的人问对不起。我回滚了EDIT,因为我没有注意到U所做的更改。感谢所有指出必须改变它的人,

java - 在使用 va_arg 传递 char* 时,在 JNI 中将 char* 转换为 jstring

是否需要将char*转为jbyteArray,然后调用javaString构造函数生成jstring?还能怎么做?请帮忙。staticinttesthandler(void*arg,...){inti;structcallback*cb=(structcallback*)arg;JNIEnv*env=cb->env;char*sig=cb->signature;jintsize=(jint)strlen(sig);jintsize1;va_listarguments;jobjectArrayreturn_array;jclassobj_class;jbyteArraybytes;jst

c++ - std::string::compare(const char*) 可以抛出异常吗?

这是过载(4)here在“异常”部分,重载2、3、5、6(具有pos1和/或pos2参数)被命名为throwingstd::out_of_range.重载(4)没有“pos”参数,但是没有标注noexcept.是否抛出取决于实现?在GCC7的libstdc++中,它调用char_traits::length和char_traits::compare.这些似乎不能扔,但没有标记noexcept. 最佳答案 除了析构函数、交换函数、移动构造函数和移动赋值运算符之外,标准仅在函数具有widecontract时才标记函数noexcept,即

c++ - 为什么这个专门用于 basic_ifstream 模板的 char_traits<uint8_t> 和 codecvt<uint8_t> 会抛出 std::bad_cast?

Therearealreadyquestions在Stackoverflow上询问为什么basic_fstream不起作用。答案说char_traits仅专门用于char和wchar_t(加上char16_t,char32_t在C++11中)你应该坚持使用basic_fstream读取二进制数据并根据需要进行转换。该死的,这还不够好!:)没有一个答案(我能找到)说如何特化char_traits并将其与basic_fstream一起使用模板,或者如果它甚至可能的话。所以我想我会尝试自己实现它。在Windows764位上使用VisualStudioExpress2013RC和在Kubunt

c++ - 为什么在使用 libc++ 时 sizeof( std::variant< char > ) == 8 而不是 2 (如 MSVC 的 STL 和 libstdc++)?

考虑thisexampleonCompilerexplorer.基本上,我们有这个代码片段:#include#includeenumclassEnum1:std::uint8_t{A,B};enumclassEnum2:std::uint8_t{C,D};usingVar=std::variant;usingVar2=std::variant;templatestructprint_size;voidfunc(){print_size{};print_size{};}如果我们使用GCC的libstdc++(使用clang或GCC)编译它,我们会得到预期的编译错误:error:impli

c++ - ifstream 相当于 FILE * 的倒带方法

我受命将一些C代码更新为C++,我很好奇,CFILE*在ifstream中的rewind方法的等效方法或实现是什么? 最佳答案 可以是seekg(设置获取指针)或seekp(设置放置指针)。在这两种情况下,将0作为参数传递都会导致指针被设置为文件的开头。 关于c++-ifstream相当于FILE*的倒带方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5750485/

C++,需要错误 : cannot convert parameter 1 from 'char *' to 'const char *&' 的原因

我们不能将指针转换为字符->TO->对指向常量字符的指针的引用我很想知道调用foo_ptr时出现语法错误的原因。当foo_char被允许时,为什么不foo_ptr。[更新1.]我很高兴知道foo_char()工作的原因,为什么foo_ptr()不工作..当指针进入时会发生什么图片。[更新2。]在DevC++编译器版本4.9.9.2中也没有工作..//code//OS:WinXP//Env:VC++2008//NOTALLOWEDvoidfoo_ptr(constchar*&ptr)//referencetoapointertoaconstantcharacter{return;}//a

c++ - ifstream的move构造函数是否被隐式删除?

我有以下简单的类:classSource{public:Source()=default;Source(Sourceconst&)=delete;Source(Source&&)=default;explicitSource(std::stringconst&fileName):inputStream(fileName),path_(fileName){}~Source()=default;autopath()const->std::string{returnthis->path_;}std::ifstreaminputStream;private:std::stringpath_;}

c++ - 从 unsigned char* 到 char* 的无效转换

这是一个代码-1intmain(intargc,char*argv[])2{3signedcharS,*psc;4unsignedcharU,*pusc;5charC,*pc;67C=S;8C=U;910pc=psc;11pc=pusc;1213return0;14}$gcctest.cpp-oatest.cpp:Infunction‘intmain(int,char**)’:test.cpp:10:7:error:invalidconversionfrom‘signedchar*’to‘char*’[-fpermissive]test.cpp:11:7:error:invalidco

c++ - 标准对 char 数组作为模板参数有什么看法?

在研究thisquestion的答案期间我发现(我之前不知道)gcc和clang允许char数组作为模板参数,如果它们被声明为static。例如。此代码使用gcc和clang编译:#includetemplateautofoo(){ifconstexpr(string[0]=='i')return0;elsereturn3.14f;}voidbar(){staticconstexprcharstring1[]="int";staticconstexprcharstring2[]="float";autoi=foo();autof=foo();static_assert(std::is_